# Скрин выполненного тестового задания pyqt5
![alt text](/Gui1.png)
![alt text](/Gui2.png)


# ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты ubl-settings-manager

##  1. ОПИСАНИЕ:
Графическое средство вывода иконок как ярлыков запуска утилит.

##    2. ЭТАПЫ И СРОКИ СОЗДАНИЯ ПРИЛОЖЕНИЯ:
Общий срок работ по созданию приложения составляет N дней:
    • N дня - макет и дизайн приложения и его утверждение
    • N дней - разработка приложения
    • N дня - тестирование приложения и исправление ошибок
Перечень этапов разработки приложения:
    • Разработка макета и дизайна приложения, самостоятельно
    • Утверждение и доработка макета, самостоятельно
    • Создание работающего интерфейса, включая полную разработку действующих ярлыков, кнопок и т.д., самостоятельно
    • Проектирование алгоритма работы приложения, самостоятельно
    • Написание работающего кода приложения, включая полноценно работающие элементы графического интерфейса, а также перевод (поддержка локализации En, Ru), самостоятельно
    • Тестирование и исправление ошибок, самостоятельно
    • Публикация

##    3. ТЕХНОЛОГИЧЕСКИЕ ТРЕБОВАНИЯ:
        3.1. Приложение разрабатывается под нужды операционной системы UBLinux
        3.2. Использование фирменного логотипа компании
        3.3. Название приложения, техническое:  ubl-settings-manager
        3.4. Название приложения, публичное: Менеджер настроек UBLinux
        3.5. Стек технологий:
    • Язык программирования:  Bash или Python* или C
    • Приложение для разработки графического интерфейса: Glade 3
    • Графические библиотеки: GTK3
    • Операционная система разработки: UBLinux DB
        3.6. Структура:
    • /usr/bin/ubl-settings-manager 
Bash/C: Функционал сосредоточен в консольной утилите скрипте/бинарнике (бэк).
Python: Скрипт sh вызова тела python:
#!/usr/bin/env sh
/usr/bin/python /usr/share/ubl-settings-manager/py/ubl-settings-manager.py "$@"
    • /usr/share/ubl-settings-manager/py/ubl-settings-manager.py
Python: Функционал сосредоточен в консольной утилите скрипте (бэк).
    • /usr/share/ubl-settings-manager/ui/ubl-settings-manager.glade
Графическая часть, фронт
    • /usr/share/ubl-settings-manager/css/ubl-settings-manager.css
Python: Стили виджитов GTK
    • /usr/share/ubl-settings-manager/images/{*.png,*.svg}
Элементы изображений
    • /usr/share/ubl-settings-manager/locale -> /usr/share/locale
Python: Локализация En/Ru

##    4.  ТЕХНИЧЕСКОЕ ЗАДАНИЕ:
        4.1. Главное окно:
            4.1.1. Требования к внешнему виду:
    • Адаптивный (резиновый) дизайн.
    • Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей.
    • Шапка в стиле приложений GTK3.
    • В левой части экрана узкой полосой расположен логотип с названием утилиты UBL Settings (UBL Настройки). Графическая часть уходит в полупрозрачный градиент, фоновая часть имеет заданный фон цвета, чтобы при изменении высоты окна левая часть с графикой смотрелась целостно.
    • «Рабочая область» обрамлена границей и вся площадь предназначена для вывода сгруппированного списка  иконок утилит.
    • В нижней левой части окна, под рабочей областью, кнопка "Справка".
    • В нижней правой части окна, под рабочей областью, кнопка "Закрыть".
            4.1.2. Требования к «Рабочей области»
                4.1.2.1. Рабочая область представлена в виде вывода иконок приложений
    • Иконки представляют собой приложения из списка /usr/share/applications/*.desktop
    • Иконки в группе сортируются в алфавитном порядке, переменная «Name=» или «Name[*]=» c соответствующей [*] локализации, указана в файле ярлыка приложения /usr/share/applications/*.desktop
    • Обязательная переменная «Type=Application» в файле ярлыка приложения /usr/share/applications/*.desktop для отбора
                4.1.2.2. Иконки в рабочей область делятся на группы в соответствии с значением переменной «Categories=»:
    • Имя группы «Личные», тег категорий «X-UBL-SettingsManager;X-UBL-PersonalSettings»
    • Имя группы «Оборудование», тег категорий «X-UBL-SettingsManager;X-UBL-HardwareSettings»
    • Имя группы «Система», тег категорий «X-UBL-SettingsManager;X-UBL-SystemSettings»
    • Имя группы «Прочее», тег категории «X-UBL-SettingsManager»
                4.1.2.3. Категории приложения, переменная «Categories=» указан в файле ярлыка приложения /usr/share/applications/*.desktop
                4.1.2.4. Иконка приложения, переменная «Icon=» указана в файле ярлыка приложения /usr/share/applications/*.desktop
                4.1.2.5. Запускаемое приложение, переменная «Exec=» указана в файле ярлыка приложения /usr/share/applications/*.desktop
                4.1.2.6. Текстовое имя иконки приложения, переменная «Name=» или «Name[*]=» c соответствующей [*] локализации, указана в файле ярлыка приложения /usr/share/applications/*.desktop
                4.1.2.7. Всплывающая подсказка на иконке приложения, переменная «Comment=» или «Comment[*]=» c соответствующей [*] локализации, указана в файле ярлыка приложения /usr/share/applications/*.desktop
                4.1.2.8. Часть ссылки на справку приложения, переменная «X-UBLHelpPage=», указана в файле ярлыка приложения /usr/share/applications/*.desktop. Является частью тела ссылки на справку о приложении. Пример «X-UBLHelpPage=ubl-settings-manager», в приложении используется как ссылка: 
«https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Настройка/ubl-settings-manager»
                4.1.2.9. Действия по двойному нажатию иконки, вызывает соответствующее приложение переменной «Exec=»
                4.1.2.10. Действие по нажатию кнопки "Справка", вызывает окно
                4.1.2.10. Действие по нажатию кнопки "Справка", вызывает окно

                4.1.2.11. Действие по нажатию кнопки "Прочитать онлайн", ссылка на документацию
                4.1.2.12. Действие по нажатию кнопки "Закрыть". Закрывает приложение

##    5. Приложения
        5.1. Пример структуры файла /usr/share/applications/*.desktop 
[Desktop Entry]
Version=1.0
Name=Mouse and Touchpad
Name[ru]=Мышь и тачпад
Comment=Configure pointer device behavior and appearance
Comment[ru]=Настройка поведения и внешнего вида устройств указания
Exec=xfce4-mouse-settings
Icon=org.xfce.settings.mouse
Terminal=false
Type=Application
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;X-UBL-SettingsManager;X-UBL-HardwareSettings;
StartupNotify=true
OnlyShowIn=XFCE;
X-XfcePluggable=true
X-XfceHelpPage=mouse